
                    <p style="margin:10px auto; padding-top:0px; padding-bottom:0px; font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> </p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> <strong style="background-color:rgb(255,255,255)"><span style="color:#ff0000">本文转自：<span style="line-height:25.2px">http://wenku.baidu.com/view/ba7dfdd180eb6294dd886c77.html</span></span></strong></p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 在<a href="https://so.csdn.net/so/search?q=%E5%8F%AF%E8%A7%86%E5%8C%96&amp;spm=1001.2101.3001.7020" target="_blank" class="hl hl-1" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;dest&quot;:&quot;https://so.csdn.net/so/search?q=%E5%8F%AF%E8%A7%86%E5%8C%96&amp;spm=1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;searchword\&quot;:\&quot;可视化\&quot;}&quot;}" data-tit="可视化" data-pretit="可视化">可视化</a>程序设计中，焦点（focus）是一个十分重要的概念。下面详细介绍一下如何设置焦点，以及窗体上控件的Tab顺序。</p> 
<h4 style="margin:10px 0px; padding:0px; font-size:16px; line-height:1.5; font-family:verdana,Arial,Helvetica,sans-serif"><a name="t0"></a> 1 设置焦点</h4> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 简单地说，焦点是接收用户鼠标或键盘输入的能力。当一个对象具有焦点时，它可以接收用户的输入。在<span class="words-blog hl-git-1" data-tit="Windows" data-pretit="windows">Windows</span>系统中，某个时刻可以运行多个应用程序，但是只用具有焦点的应用程序才有活动标题栏，能够接收用户的输入。类似地，在含有多个文本框的窗体中，只有具有焦点的文本框才能接受用户的输入。</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 当对象得到焦点时，会触发GotFocus事件；当对象失去焦点时，将触发LostFocus事件，前面文本框的例题中已经见过这方面的例子。LostFocus事件过程通常用来对更新进行确认和有效性检查，也可用于修正或改变在GotFocus事件过程中设立的条件。窗体和多数控件支持这些事件。</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 可以用下面的方法设置一个对象的焦点：</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> l&nbsp; 在运行时单击该对象</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> l&nbsp; 运行时用热键选择该对象</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> l&nbsp; 在程序代码中用SetFocus方法</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> l&nbsp; 利用Tab键将焦点移动到该对象上</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 焦点只能移到可视的窗体或控件上，因此，只有当一个对象的Enabled和Visible属性均为True时，它才能接收焦点。Enabled属性允许对象响应由用户产生的事件，如键盘和鼠标事件，而Visible属性决定了对象是否可见。</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 注意，并不是所有对象都可以接收焦点。某些控件，包括框架（Frame）、标签（Label）、菜单（Menu）、直线（Line）、形状（Shape）、图像框（<span class="words-blog hl-git-1" data-tit="Image" data-pretit="image">Image</span>）和计时器（Timer）都不能接收焦点。对于窗体来说，只有当窗体上的任何控件都不能接收焦点时，该窗体才能接收焦点。</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 对于大多数可以接收焦点的控件来说，从外观上可以看出它是否具有焦点。例如，当命令按钮、复选框、单选按钮等控件具有焦点时，在其内侧有一个虚线框，如图2-36所示。当文本框具有焦点时，在文本框内有闪烁的插入光标。</p> 
<p align="center" style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> &nbsp;</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 如前所述，可以通过SetFocus方法设置焦点。但是应当注意，由于在窗体的Load事件完成前，窗体或窗体上的控件是不可视的，因此，不能直接在Form_Load事件过程中，用SetFocus方法把焦点移到正在装入的窗体或窗体上的控件。必须先用Show方法显示窗体，然后才能对该窗体或窗体上的控件设置焦点。例如，对于图2-36所示窗体，编写如下事件过程：</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> Private Sub Form_Load()</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Command2.SetFocus</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> End Sub</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 程序设计者的原意是在程序开始运行后，直接把焦点移到Command2上，但是不能达到目的。程序运行后，显示出错信息，如图2-37所示。</p> 
<p align="center" style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> &nbsp;</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 为了解决这个问题，必须在这支焦点前世窗体可视，这可以通过Show方法来实现。上面的程序应该为：</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> Private Sub Form_Load()</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> &nbsp;&nbsp;&nbsp; Form1.Show</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> &nbsp;&nbsp;&nbsp; Command2.SetFocus</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> End Sub</p> 
<h4 style="margin:10px 0px; padding:0px; font-size:16px; line-height:1.5; font-family:verdana,Arial,Helvetica,sans-serif"><a name="t1"></a> 2 Tab顺序</h4> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 当窗体上有多个控件时，用鼠标单击某个控件，就可把焦点移到该控件上(假设该控件可以获得焦点)。除鼠标外，用Tab键也可以把焦点移到某个控件上。每按一次Tab键，焦点便从一个控件移到另一个控件。所谓Tab顺序，就是指按下Tab键时，焦点在各个控件之间移动的顺序。</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 在一般情况下，Tab顺序由控件建立时的先后顺序确定。例如，假定在窗体上建立了5个控件，其中3个文本框，两个命令按钮，建立顺序为：</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> Text1、Text2、Text3、Command1、Command2</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 程序执行时，光标默认地位于Text1中，每按一次Tab键，焦点就按Text2、Text3、Command1、Command2的顺序移动。当焦点位于Command2时，如果按Tab键，则焦点又回到Text1。如前所述，除计时器、菜单、框架、标签等不接收焦点的控件外，其他控件均支持Tab顺序。</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 可以获得焦点的控件都有一种称为“TabStop”的属性，用它可以控制焦点的移动。该属性的缺省值为True，如果把它设置为False，则在用Tab键移动焦点时会跳过该控件。TabStop属性为False的控件，仍然保持它在实际的Tab顺序中的位置，只不过在按Tab键时这个控件被跳过。</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 在设计模式下，可以通过属性窗口中的TabIndex属性来改变Tab顺序。在前面的例子中，如果把Command2的TabIndex由4改为0，把Text1的TabIndex由0改为1，把Text2的TabIndex由1改为2，把Text3的TabIndex由2改为3，把Command1的TabIndex由3改为4。则程序运行时Tab顺序变为Command2 →Text1→Text2→Text3→Command1。</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> 不能获得焦点的控件以及无效的和不可见的控件，不具有TabIndex属性，因而不包含在Tab顺序中，按Tab键时，这样的控件将被跳过。</p> 
<p style="margin:10px auto; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:verdana,Arial,Helvetica,sans-serif; font-size:14px; line-height:25.2px"> <br> </p>
                